
package View;
import java.awt.Dimension;
import javax.swing.JTabbedPane;
/**
 * Głowny panel zawierający panele sciągania, wyszukiwania i wysyłania.
 * @param wysyłanie - referencja na panel wysyłania.
 * @param pobieranie - referenjca na panel pobierania.
 * @param wyszukiwanie - referencja na panel wyszukiwania.
 * @param view - referencja na widok.
 * @param tree - refencja na komponent drzewa plików.
 */
public class RightPanel extends JTabbedPane {
    private Uploading wysylanie;
    private Downloading pobieranie;
    private Searching wyszukiwanie;
    private View view;
    private FilesTree tree;
    
    RightPanel(final View view, final FilesTree tree) {
       
        this.view = view;
        this.tree = tree;
        wyszukiwanie = new Searching(view,tree);
        pobieranie = new Downloading(view);
        wysylanie = new Uploading(view);
        this.setPreferredSize(new Dimension(250,500));
        this.addTab("Wyszukiwanie", wyszukiwanie);
        this.addTab("Wysyłanie", wysylanie);
        this.addTab("Pobieranie", pobieranie);
    }
    /**
     * Funkcja dodaje nowe zadanie w panelu pobierania.
     * @param title - nazwa zadania.
     */
    public void addNewDownload(String title) {
        pobieranie.addNewDownload(title);
    }
    /**
     * Funkcja aktualizuje postęp zadania w panelu pobierania.
     * @param title - nazwa zadania.
     * @param val - nowa wartość postępu.
     */
    public void updateDownloadProgress(String title, int val) {
        pobieranie.updateDownloadProgress(title, val);
    }
    /**
     * Funkcja dodaje nowe zadania w panelu wysyłania.
     * @param title - nazwa zadania.
     */
    public void addNewUpload(String title) {
        wysylanie.addNewUpload(title);
    }
    /**
     * Funkcja aktualizuje postęp zadania w panelu wysyłania.
     * @param title - nazwa zadania.
     * @param val - nowa wartość postępu.
     */
    public void updateUploadProgress(String title, int val) {
        wysylanie.updateUploadProgress(title, val);
    }
    /**
     * Sprawdza czy zadanie znajduje się już na liście wysyłania.
     * @param title nazwa zadania
     * @return prawda, jeżeli zadanie znajduje się juz na liście wysyłania, falsz w przeciwnym wypadku.
     */
    public boolean uploadExists(String title) {
        return wysylanie.exists(title);
    }
    /**
     * Sprawdza czy zadanie znajduje się już na liście pobierania.
     * @param title - nazwa zadania.
     * @return rawda, jeżeli zadanie znajduje się juz na liście pobierania, falsz w przeciwnym wypadku.
     */
    public boolean downloadExists(String title) {
        return pobieranie.exists(title);
    }
}
